/**
 * 
 */
package cl.duocap.refaxion.view.bean;

import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.ValidatorException;

import cl.duocap.refaxion.dto.TallerDTO;
import cl.duocap.refaxion.dto.TipoUsuarioDTO;
import cl.duocap.refaxion.dto.UsuarioDTO;
import cl.duocap.refaxion.servicios.TallerService;
import cl.duocap.refaxion.servicios.UsuarioService;
import cl.duocap.refaxion.util.ValidarRut;

/**
 * @author rentonx
 *
 */
@ManagedBean(name = "formUsuarioBean")
@SessionScoped
public class FormUsuarioBean implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	private UsuarioDTO usuarioNuevo = new UsuarioDTO();
	private TipoUsuarioDTO tipoUsuario;
	private List<TipoUsuarioDTO> listaTiposUsuario;
	private List<TallerDTO> obtenerListaTaller;
	private Map<String , Integer> listaTaller;
	private ValidarRut validaRut;
	
	
	/**
	 * 
	 */
	@PostConstruct
	public void iniciar(){
		if (FacesContext.getCurrentInstance().isPostback()) {
			return;
		}
		

		////////////////////////////////////////////////////////////////////////
		inicializar();
		
		
	}
	
	public void inicializar(){
		//usuarioNuevo= null;
	}

	public String registrarUsuarioNuevo(){
		
		//UsuarioService usuario = new UsuarioService();

		SimpleDateFormat dateformatJava = new SimpleDateFormat("dd-MM-yyyy");
		usuarioNuevo.setFechaIngreso(dateformatJava.format(new Date()));
		UsuarioService usuario = new UsuarioService();
		
		if(usuario.registrarUsuarioNuevo(usuarioNuevo)){
			return "mainUsuario.xhtml?faces-redirect=true";
		}else{
			return "home.xhtml?faces-redirect=true";
		}
	}
	
	public String listarTipoUsuario(){
		
		UsuarioService listaU = new UsuarioService();
		listaTiposUsuario = listaU.listarTipoUsuario();
		return "formUsuario.xhtml?faces-redirect=true";
		
	}
	
	public void validate(FacesContext arg0, UIComponent arg1, Object arg2) throws ValidatorException{
		validaRut = new ValidarRut();
		if(!validaRut.validarRut((String)arg2)){
			 throw new ValidatorException(new FacesMessage("Rut ingresado ni es valido."));
		}
	}

	
	public FormUsuarioBean() {
		
	}

	public UsuarioDTO getUsuarioNuevo() {
		return usuarioNuevo;
	}

	public void setUsuarioNuevo(UsuarioDTO usuarioNuevo) {
		this.usuarioNuevo = usuarioNuevo;
	}

	public List<TipoUsuarioDTO> getListaTiposUsuario() {
		return listaTiposUsuario;
	}

	public void setListaTiposUsuario(List<TipoUsuarioDTO> listaTiposUsuario) {
		this.listaTiposUsuario = listaTiposUsuario;
	}

	public TipoUsuarioDTO getTipoUsuario() {
		return tipoUsuario;
	}

	public void setTipoUsuario(TipoUsuarioDTO tipoUsuario) {
		this.tipoUsuario = tipoUsuario;
	}

	public List<TallerDTO> getObtenerListaTaller() {
		return obtenerListaTaller;
	}

	public void setObtenerListaTaller(List<TallerDTO> obtenerListaTaller) {
		this.obtenerListaTaller = obtenerListaTaller;
	}

	public Map<String , Integer> getListaTaller() {
		return listaTaller;
	}

	public void setListaTaller(Map<String , Integer> listaTaller) {
		this.listaTaller = listaTaller;
	}

	public ValidarRut getValidaRut() {
		return validaRut;
	}

	public void setValidaRut(ValidarRut validaRut) {
		this.validaRut = validaRut;
	}



	
	
	

}
